﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Box.Entities;

namespace Box.Repository
{
    public class DatabaseInicializer : DropCreateDatabaseIfModelChanges<BoxContext>
    {
        protected override void Seed(BoxContext context)
        {
            if (context == null)
            {
                throw new ArgumentException("El context no Existe..!");
            }
            else
            {
                GetCategorias().ForEach(p=> context.Categorias.Add(p));
                GetTipoDocumento().ForEach(p => context.TipoDocumentos.Add(p));
                GetClientes().ForEach(p => context.Clientes.Add(p));
                GetTipoProducto().ForEach(p=>context.TipoProductos.Add(p));
                //GetProductos().ForEach(p=>context.Productos.Add(p));
                GetMarcas().ForEach(p=>context.Marcas.Add(p));
                
            }
        }

        private static List<Categoria> GetCategorias()
        {
            var cat = new List<Categoria>
            {
                new Categoria {NombreCategoria = "EPP",DescripcionCategoria = "a"},
                new Categoria {NombreCategoria = "SEÑALIZACIÓN",DescripcionCategoria = "a"},
                new Categoria {NombreCategoria = "GUANTES",DescripcionCategoria = "a"},
                new Categoria {NombreCategoria = "CHALECOS",DescripcionCategoria = "a"},
                new Categoria {NombreCategoria = "ZAPATOS",DescripcionCategoria = "a"},
                new Categoria {NombreCategoria = "ZAPATILLAS",DescripcionCategoria = "a"},
                new Categoria {NombreCategoria = "CINTAS",DescripcionCategoria = "a"},
                new Categoria {NombreCategoria = "PANTALONES",DescripcionCategoria = "a"}

            };
            return cat;
        }

        private static List<TipoDocumento> GetTipoDocumento()
        {
            //decimal igv = 0.18;
            var doc = new List<TipoDocumento>
            {
                new TipoDocumento {NombreTipoDocumento = "BOLETA", IGV = 1},
                new TipoDocumento {NombreTipoDocumento = "FACTURA"},
                new TipoDocumento {NombreTipoDocumento = "TICKET" }
            };
            return doc;
        }

        private static List<Cliente> GetClientes()
        {
            var cliete = new List<Cliente>
            {
                new Cliente
                {
                    NombreCliente = "Gustavo Cruzado Asencio",
                    CorreoCliente = "g@hotmail.com",
                    DireccionCliente = "Casa",
                    TelefonoCliente = "090909",
                    RucCliente = "12345678",
                    Organizacion = "Casa"
                },
                new Cliente
                {
                    NombreCliente = "Elvis Chalan Malca",
                    CorreoCliente = "elvis@hotmail.com",
                    DireccionCliente = "Casa",
                    TelefonoCliente = "12921",                    
                    RucCliente = "1234",
                    Organizacion = "casa"
                    
                }
            };
            //for (int i = 0; i < 10; i++)
            //{
            //    cliete.Add(new Cliente
            //    {
            //        NombreCliente = Faker.Name.FullName().ToUpper(),
            //        CorreoCliente = Faker.Internet.Email().ToUpper(),
            //        DireccionCliente = Faker.Address.StreetAddress().ToUpper(),
            //        TelefonoCliente = Faker.Phone.Number(),
            //        RucCliente = Faker.Phone.Number(),
            //        Organizacion = Faker.Company.Name().ToUpper(),
            //    });
            //}
            return cliete;
        }

        private static List<TipoProducto> GetTipoProducto()
        {
            var tipoProd = new List<TipoProducto>
            {
                new TipoProducto { NombreTipoProducto = "IMPERMEABLE"},
                new TipoProducto {NombreTipoProducto = "EPP"},
                new TipoProducto {NombreTipoProducto = "REFLECTIVOS"}
            };
            return tipoProd;
        }

        private static List<Producto> GetProductos()
        {
            var producto = new List<Producto>
            {
                new Producto
                {
                    NombreProducto = "PANTALONES",
                    Categoria = new Categoria
                    {
                        Id = 1
                    },
                    TallaProducto = "M",
                    Precio = 123,
                    Stock = 12,
                    
                     TipoProducto = new TipoProducto
                     {
                         Id = 1
                     }
                   
                },
                new Producto
                {
                    NombreProducto = "GUANTES",
                    Categoria = new Categoria
                    {
                        Id = 1
                    },
                    TallaProducto = "M",
                    Precio = 123,
                    Stock = 12,
                    
                     TipoProducto = new TipoProducto
                     {
                         Id = 1
                     }
                   
                },
                new Producto
                {
                    NombreProducto = "LENTES",
                    Categoria = new Categoria
                    {
                        Id = 1
                    },
                    TallaProducto = "M",
                    Precio = 123,
                    Stock = 12,
                    
                     TipoProducto = new TipoProducto
                     {
                         Id = 1
                     }
                   
                },
                new Producto
                {
                    NombreProducto = "ZAPATOS",
                    Categoria = new Categoria
                    {
                        Id = 1
                    },
                    TallaProducto = "40",
                    Precio = 123,
                    Stock = 12,
                    
                     TipoProducto = new TipoProducto
                     {
                         Id = 1
                     }
                   
                }
            };
            return producto;
        }

        private static List<Marca> GetMarcas()
        {
            var marca = new List<Marca>
            {
                new Marca{NombreMarca = "POLISTEL"},
                new Marca{NombreMarca = "PICANOL"},
                new Marca{NombreMarca = "MENDIZZA"},
                new Marca{NombreMarca = "MOTOCONO"},
                new Marca{NombreMarca = "CORCHI"},
                new Marca{NombreMarca = "SMIT TEXTILE"},
                new Marca{NombreMarca = "STAUBLI"},
            };
            return marca;
        }
    }
}

